
#ifndef  HELPER_UTIL_OBSERVER_H
#define  HELPER_UTIL_OBSERVER_H

namespace helper {
namespace util {

template<typename E>
class IObserver {
public:
    virtual ~IObserver(){}
    virtual int update(E * e) = 0;
};
class IPushObserver : public IObserver<Event>{
public:
    ~IPushObserver() override {}
    int update(Event * event) override{
        return -1;
    }
};

class IPullObserver : public IObserver<IPullSubject> {
public:
    ~IPullObserver() override {}
    int update(IPullSubject * subject) override {
        return -1;
    }
};


} // end of namespace util
} // end of namespace helper

#endif   /* HELPER_UTIL_OBSERVER_H */
